package design.patterns.singlemode;

/**
 * singlemode---饿汉模式
 * 1.构造方法私有化
 * 2.内部创建实例，唯一的，提供给外部使用。
 */

public class SingleV1 {
    /**
     * 1.构造方法私有化，不允许外部直接创建对象
     */
    private SingleV1() {

    }

    /**
     * 2.内部创建类的唯一实例，提供给外部使用，将方法变为类的成员，加上static
     * 外部就可以通过类名直接调用
     */
    static SingleV1 instance = new SingleV1();

    /**
     * 3.面向对象的封装，控制访问的安全 将类方法私有化，
     * 声明了对象，并且新建实例
     * 饿汉模式在类加载的时候就已经创建了实例对象了，所以相对懒汉模式类加载速度会慢一些，但是在运行是调用类的实例方法就相对会快些，
     * 并且饿汉模式是线程安全的
     */
    private static SingleV1 instance1 = new SingleV1();

    /**
     * 上面将实例私有化了，那么就提供一个获取实例的公开的方法
     * @return
     */
    public static SingleV1 getInstance1(){
        return instance1;
    }

}
